package org.giovanolli.mumi.controller.payment;

import java.util.Date;
import java.util.List;

import org.giovanolli.mumi.controller.AbstractModel;
import org.giovanolli.mumi.entities.Patient;
import org.giovanolli.mumi.entities.PaymentConcept;
import org.giovanolli.mumi.entities.PaymentDetail;
import org.springframework.context.annotation.Scope;
import org.springframework.context.annotation.ScopedProxyMode;
import org.springframework.stereotype.Controller;

/**
 * The Class PaymentDetailModel.
 */
@Controller("paymentDetailModel")
@Scope(value = "flow", proxyMode = ScopedProxyMode.TARGET_CLASS)
public class PaymentDetailModel extends AbstractModel<PaymentDetail> implements Cloneable {

	/** The Constant serialVersionUID. */
	private static final long serialVersionUID = 4308028443273607227L;

	/** The sort property. */
	private String sortProperty;

	/** The patient. */
	private Patient patient;

	/** The selectable patients. */
	private List<Patient> selectablePatients;

	/** The payment concept. */
	private PaymentConcept paymentConcept;

	/** The selectable payment concepts. */
	private List<PaymentConcept> selectablePaymentConcepts;

	/** The amount. */
	private Double amount;

	/** The observation. */
	private String observation;

	/** The date. */
	private Date date;

	/**
	 * Instantiates a new paymentDetail model.
	 */
	public PaymentDetailModel() {
		return;
	}

	/**
	 * Gets the amount.
	 * 
	 * @return the amount
	 */
	public Double getAmount() {
		return amount;
	}

	/**
	 * Gets the date.
	 * 
	 * @return the date
	 */
	public Date getDate() {
		return date;
	}

	/**
	 * Gets the observation.
	 * 
	 * @return the observation
	 */
	public String getObservation() {
		return observation;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see org.giovanolli.mumi.controller.AbstractModel#getPageNumber()
	 */
	public Integer getPageNumber() {
		return pageNumber;
	}

	/**
	 * Gets the patient.
	 * 
	 * @return the patient
	 */
	public Patient getPatient() {
		return patient;
	}

	/**
	 * Gets the payment concept.
	 * 
	 * @return the payment concept
	 */
	public PaymentConcept getPaymentConcept() {
		return paymentConcept;
	}

	/**
	 * Gets the selectable patients.
	 * 
	 * @return the selectable patients
	 */
	public List<Patient> getSelectablePatients() {
		return selectablePatients;
	}

	/**
	 * Gets the selectable payment concepts.
	 * 
	 * @return the selectable payment concepts
	 */
	public List<PaymentConcept> getSelectablePaymentConcepts() {
		return selectablePaymentConcepts;
	}

	/**
	 * Gets the sort property.
	 * 
	 * @return the sort property
	 */
	public String getSortProperty() {
		return sortProperty;
	}

	/**
	 * Sets the amount.
	 * 
	 * @param amount
	 *            the new amount
	 */
	public void setAmount(Double amount) {
		this.amount = amount;
	}

	/**
	 * Sets the date.
	 * 
	 * @param date
	 *            the new date
	 */
	public void setDate(Date date) {
		this.date = date;
	}

	/**
	 * Sets the observation.
	 * 
	 * @param observation
	 *            the new observation
	 */
	public void setObservation(String observation) {
		this.observation = observation;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see org.giovanolli.mumi.controller.AbstractModel#setPageNumber(java.lang. Integer)
	 */
	public void setPageNumber(Integer pageNumber) {
		this.pageNumber = pageNumber;
	}

	/**
	 * Sets the patient.
	 * 
	 * @param patient
	 *            the new patient
	 */
	public void setPatient(Patient patient) {
		this.patient = patient;
	}

	/**
	 * Sets the payment concept.
	 * 
	 * @param paymentConcept
	 *            the new payment concept
	 */
	public void setPaymentConcept(PaymentConcept paymentConcept) {
		this.paymentConcept = paymentConcept;
	}

	/**
	 * Sets the selectable patients.
	 * 
	 * @param selectablePatients
	 *            the new selectable patients
	 */
	public void setSelectablePatients(List<Patient> selectablePatients) {
		this.selectablePatients = selectablePatients;
	}

	/**
	 * Sets the selectable payment concepts.
	 * 
	 * @param selectablePaymentConcepts
	 *            the new selectable payment concepts
	 */
	public void setSelectablePaymentConcepts(List<PaymentConcept> selectablePaymentConcepts) {
		this.selectablePaymentConcepts = selectablePaymentConcepts;
	}

	/**
	 * Sets the sort property.
	 * 
	 * @param sortProperty
	 *            the new sort property
	 */
	public void setSortProperty(String sortProperty) {
		this.sortProperty = sortProperty;
	}

}
